多型(Polymorphism)本質:同一操作介面,面對不同型別的物件時,能各自展現出不同的實作行為。
父子類別的覆寫機制(Override vs Virtual):
* 基底類別(父類別):需加上 virtual 關鍵字,允許該方法被子類別重新定義。
* 衍生類別(子類別):需加上 override 關鍵字,明確表示要覆寫父類別的虛擬實作。
* 簽章一致性:覆寫的方法必須與父類別具有完全相同的方法名稱、參數型別與數量、回傳型別,且存取範圍不能比父類別更嚴格。
多型實作的核心機制(動態繫結 / Dynamic Binding):
* 當使用「父類別型別」的變數指向「子類別實體」時,程式在執行階段(Runtime)會自動根據該實體的實際型別,動態決定並呼叫子類別覆寫後的版本。
* 配合集合(例如 List<父類別>),可用同一段迴圈邏輯同時操控各種不同特化的子類別。
覆寫(override)與隱藏(new)的差異:
* new:只依據宣告的「變數型別」決定呼叫對象(靜態繫結)。
* override:永遠依據「實際物件記憶體實體」決定呼叫對象(動態多型)。
實作範例:
